home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / enlightenment / e_border.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  15KB  |  577 lines

  1. /*
  2.  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  3.  */
  4. #ifdef E_TYPEDEFS
  5.  
  6. typedef enum _E_Direction
  7. {
  8.    E_DIRECTION_UP,
  9.    E_DIRECTION_DOWN,
  10.    E_DIRECTION_LEFT,
  11.    E_DIRECTION_RIGHT
  12. } E_Direction;
  13.  
  14. typedef enum _E_Transition
  15. {
  16.    E_TRANSITION_LINEAR,
  17.    E_TRANSITION_SINUSOIDAL,
  18.    E_TRANSITION_ACCELERATE,
  19.    E_TRANSITION_DECELERATE
  20. } E_Transition;
  21.  
  22. typedef enum _E_Stacking
  23. {
  24.    E_STACKING_NONE,
  25.    E_STACKING_ABOVE,
  26.    E_STACKING_BELOW
  27. } E_Stacking;
  28.  
  29. typedef enum _E_Focus_Policy
  30. {
  31.    E_FOCUS_CLICK,
  32.    E_FOCUS_MOUSE,
  33.    E_FOCUS_SLOPPY
  34. } E_Focus_Policy;
  35.  
  36. typedef enum _E_Focus_Setting
  37. {
  38.    E_FOCUS_NONE,
  39.    E_FOCUS_NEW_WINDOW,
  40.    E_FOCUS_NEW_DIALOG,
  41.    E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED
  42. } E_Focus_Setting;
  43.  
  44. typedef enum _E_Maximize
  45. {
  46.    E_MAXIMIZE_NONE,
  47.    E_MAXIMIZE_FULLSCREEN,
  48.    E_MAXIMIZE_SMART,
  49.    E_MAXIMIZE_EXPAND,
  50.    E_MAXIMIZE_FILL,
  51.    E_MAXIMIZE_VERTICAL,
  52.    E_MAXIMIZE_HORIZONTAL
  53. } E_Maximize;
  54.  
  55. typedef enum _E_Fullscreen
  56. {
  57.    /* Resize window */
  58.    E_FULLSCREEN_RESIZE,
  59.    /* Change screen resoultion and resize window */
  60.    E_FULLSCREEN_ZOOM
  61. } E_Fullscreen;
  62.  
  63. typedef enum _E_Window_Placement
  64. {
  65.    E_WINDOW_PLACEMENT_SMART,
  66.    E_WINDOW_PLACEMENT_CURSOR,
  67.    E_WINDOW_PLACEMENT_MANUAL
  68. } E_Window_Placement;
  69.  
  70. typedef struct _E_Border                     E_Border;
  71. typedef struct _E_Border_Pending_Move_Resize E_Border_Pending_Move_Resize;
  72. typedef struct _E_Event_Border_Resize        E_Event_Border_Resize;
  73. typedef struct _E_Event_Border_Move          E_Event_Border_Move;
  74. typedef struct _E_Event_Border_Add           E_Event_Border_Add;
  75. typedef struct _E_Event_Border_Remove        E_Event_Border_Remove;
  76. typedef struct _E_Event_Border_Show          E_Event_Border_Show;
  77. typedef struct _E_Event_Border_Hide          E_Event_Border_Hide;
  78. typedef struct _E_Event_Border_Iconify       E_Event_Border_Iconify;
  79. typedef struct _E_Event_Border_Uniconify     E_Event_Border_Uniconify;
  80. typedef struct _E_Event_Border_Stick         E_Event_Border_Stick;
  81. typedef struct _E_Event_Border_Unstick       E_Event_Border_Unstick;
  82. typedef struct _E_Event_Border_Zone_Set      E_Event_Border_Zone_Set;
  83. typedef struct _E_Event_Border_Desk_Set      E_Event_Border_Desk_Set;
  84. typedef struct _E_Event_Border_Stack         E_Event_Border_Stack;
  85. typedef struct _E_Event_Border_Icon_Change   E_Event_Border_Icon_Change;
  86.  
  87. #else
  88. #ifndef E_BORDER_H
  89. #define E_BORDER_H
  90.  
  91. #define E_BORDER_TYPE 0xE0b01002
  92.  
  93. struct _E_Border
  94. {
  95.    E_Object             e_obj_inherit;
  96.  
  97.    struct {
  98.     struct {
  99.          int x, y, w, h;
  100.          int mx, my;
  101.     } current, last_down[3], last_up[3];
  102.    } mouse;
  103.  
  104.    struct {
  105.     struct {
  106.          int x, y, w, h;
  107.          int mx, my;
  108.          int button;
  109.     } down;
  110.    } moveinfo;
  111.  
  112.    Ecore_X_Window  win;
  113.    int             x, y, w, h;
  114.    int             ref;
  115.    E_Zone         *zone;
  116.    E_Desk         *desk;
  117.    Evas_List      *handlers;
  118.  
  119.    struct {
  120.       int          l, r, t, b;
  121.       int          sl, sr, st, sb;
  122.    } client_inset;
  123.  
  124.    Ecore_Evas     *bg_ecore_evas;
  125.    Evas           *bg_evas;
  126.    Ecore_X_Window  bg_win;
  127.    Ecore_X_Window  bg_subwin;
  128.    Evas_Object    *bg_object;
  129.    Evas_Object    *icon_object;
  130.    Ecore_X_Window  event_win;
  131.    
  132.    struct {
  133.       Ecore_X_Window shell_win;
  134.       Ecore_X_Window win;
  135.       
  136.       int x, y, w, h;
  137.       
  138.       struct {
  139.      unsigned char changed : 1;
  140.      unsigned char user_selected : 1;
  141.      char *name;
  142.       } border;
  143.       
  144.       unsigned char shaped : 1;
  145.       
  146.       struct {
  147.      char *title;
  148.      char *name;
  149.      char *class;
  150.      char *icon_name;
  151.      char *machine;
  152.      int min_w, min_h;
  153.      int max_w, max_h;
  154.      int base_w, base_h;
  155.      int step_w, step_h;
  156.      int start_x, start_y;
  157.      double min_aspect, max_aspect;
  158.      Ecore_X_Window_State_Hint initial_state;
  159.      Ecore_X_Window_State_Hint state;
  160.      Ecore_X_Pixmap icon_pixmap;
  161.      Ecore_X_Pixmap icon_mask;
  162.      Ecore_X_Window icon_window;
  163.      Ecore_X_Window window_group;
  164.      Ecore_X_Window transient_for;
  165.      Ecore_X_Window client_leader;
  166.      Ecore_X_Gravity gravity;
  167.      char *window_role;
  168.      unsigned char take_focus : 1;
  169.      unsigned char accepts_focus : 1;
  170.      unsigned char urgent : 1;
  171.      unsigned char delete_request : 1;
  172.      unsigned char request_pos : 1;
  173.      struct {
  174.         unsigned char title : 1;
  175.         unsigned char name_class : 1;
  176.         unsigned char icon_name : 1;
  177.         unsigned char machine : 1;
  178.         unsigned char hints : 1;
  179.         unsigned char size_pos_hints : 1;
  180.         unsigned char protocol : 1;
  181.         unsigned char transient_for : 1;
  182.         unsigned char client_leader : 1;
  183.         unsigned char window_role : 1;
  184.         unsigned char state : 1;
  185.      } fetch;
  186.       } icccm;
  187.       struct {
  188.      Ecore_X_MWM_Hint_Func func;
  189.      Ecore_X_MWM_Hint_Decor decor;
  190.      Ecore_X_MWM_Hint_Input input;
  191.      unsigned char exists : 1;
  192.      unsigned char borderless : 1;
  193.      struct {
  194.         unsigned char hints : 1;
  195.      } fetch;
  196.       } mwm;
  197.       struct {
  198.      pid_t pid;
  199.      unsigned int desktop;
  200.      char *name;
  201.      char *icon_name;
  202.      Ecore_X_Icon *icons;
  203.      int num_icons;
  204.      unsigned int user_time;
  205.      struct {
  206.         int left;
  207.         int right;
  208.         int top;
  209.         int bottom;
  210.         int left_start_y;
  211.         int left_end_y;
  212.         int right_start_y;
  213.         int right_end_y;
  214.         int top_start_x;
  215.         int top_end_x;
  216.         int bottom_start_x;
  217.         int bottom_end_x;
  218.      } strut;
  219.      unsigned char ping : 1;
  220.      struct {
  221.         unsigned char        request : 1;
  222.         unsigned int         wait;
  223.         Ecore_X_Sync_Alarm   alarm;
  224.         Ecore_X_Sync_Counter counter;
  225.         unsigned int         serial;
  226.         double               send_time;
  227.      } sync;
  228.  
  229.      /* NetWM Window state */
  230.      struct {
  231.         unsigned char modal : 1;
  232.         unsigned char sticky : 1;
  233.         unsigned char maximized_v : 1;
  234.         unsigned char maximized_h : 1;
  235.         unsigned char shaded : 1;
  236.         unsigned char skip_taskbar : 1;
  237.         unsigned char skip_pager : 1;
  238.         unsigned char hidden : 1;
  239.         unsigned char fullscreen : 1;
  240.         E_Stacking    stacking;
  241.      } state;
  242.  
  243.      Ecore_X_Window_Type type;
  244.      int startup_id;
  245.  
  246.      struct {
  247.         unsigned char name : 1;
  248.         unsigned char icon_name : 1;
  249.         unsigned char icon : 1;
  250.         unsigned char user_time : 1;
  251.         unsigned char strut : 1;
  252.         unsigned char type : 1;
  253.         unsigned char state : 1;
  254.         /* No, fetch on new_client, shouldn't be changed after map.
  255.         unsigned char pid : 1;
  256.         */
  257.         /* No, ignore this
  258.         unsigned char desktop : 1;
  259.         */
  260.      } fetch;
  261.  
  262.      struct {
  263.         unsigned char state : 1;
  264.      } update;
  265.       } netwm;
  266.  
  267.       /* Extra e stuff */
  268.       struct {
  269.      struct {
  270.         unsigned char centered : 1;
  271.      } state;
  272.  
  273.      struct {
  274.         unsigned char state : 1;
  275.      } fetch;
  276.       } e;
  277.  
  278.       Ecore_X_Window_Attributes initial_attributes;
  279.    } client;
  280.    
  281.    E_Container_Shape *shape;
  282.    
  283.    unsigned int    visible : 1;
  284.    unsigned int    await_hide_event;
  285.    unsigned int    moving : 1;
  286.    unsigned int    focused : 1;
  287.    unsigned int    new_client : 1;
  288.    unsigned int    re_manage : 1;
  289.    unsigned int    placed : 1;
  290.    unsigned int    shading : 1;
  291.    unsigned int    shaded : 1;
  292.    unsigned int    iconic : 1;
  293.    unsigned int    sticky : 1;
  294.    unsigned int    shaped : 1;
  295.    unsigned int    need_shape_merge : 1;
  296.    unsigned int    need_shape_export : 1;
  297.    unsigned int    fullscreen : 1;
  298.    unsigned int    want_fullscreen : 1;
  299.    unsigned int    already_unparented : 1;
  300.    unsigned int    need_reparent : 1;
  301.    unsigned int    button_grabbed : 1;
  302.    unsigned int    delete_requested : 1;
  303.    unsigned int    ping_ok : 1;
  304.    unsigned int    hung : 1;
  305.    unsigned int    take_focus : 1;
  306.    unsigned int    want_focus : 1;
  307.    unsigned int    user_skip_winlist : 1;
  308.    unsigned int    need_maximize : 1;
  309.    E_Maximize      maximized;
  310.  
  311.    unsigned int    lock_user_location : 1; /*DONE*/
  312.    unsigned int    lock_client_location : 1; /*DONE*/
  313.    unsigned int    lock_user_size : 1; /*DONE*/
  314.    unsigned int    lock_client_size : 1; /*DONE*/
  315.    unsigned int    lock_user_stacking : 1; /*DONE*/
  316.    unsigned int    lock_client_stacking : 1; /*DONE*/
  317.    unsigned int    lock_user_iconify : 1; /*DONE*/
  318.    unsigned int    lock_client_iconify : 1; /*DONE*/
  319.    unsigned int    lock_user_desk : 1;
  320.    unsigned int    lock_client_desk : 1;
  321.    unsigned int    lock_user_sticky : 1; /*DONE*/
  322.    unsigned int    lock_client_sticky : 1; /*DONE*/
  323.    unsigned int    lock_user_shade : 1; /*DONE*/
  324.    unsigned int    lock_client_shade : 1; /*DONE*/
  325.    unsigned int    lock_user_maximize : 1; /*DONE*/
  326.    unsigned int    lock_client_maximize : 1; /*DONE*/
  327.    unsigned int    lock_user_fullscreen : 1; /*DONE*/
  328.    unsigned int    lock_client_fullscreen : 1; /*DONE*/
  329.    unsigned int    lock_border : 1; /*DONE*/
  330.    unsigned int    lock_close : 1; /*DONE*/
  331.    unsigned int    lock_focus_in : 1; /*DONE*/
  332.    unsigned int    lock_focus_out : 1; /*DONE*/
  333.    unsigned int    lock_life : 1; /*DONE*/
  334.    unsigned int    internal : 1;
  335.    
  336.    Ecore_Evas     *internal_ecore_evas;
  337.    
  338.    double          ping;
  339.  
  340.    unsigned char   changed : 1;
  341.    
  342.    unsigned char   ignore_first_unmap;
  343.    unsigned char   resize_mode;
  344.    
  345.    struct {
  346.       int x, y, w, h;
  347.    } saved;
  348.  
  349.    struct {
  350.       double start;
  351.       double val;
  352.       int x, y;
  353.       E_Direction dir;
  354.       Ecore_Animator *anim;
  355.    } shade;
  356.    
  357.    Evas_List *stick_desks;
  358.    E_Menu *border_menu;
  359.    E_Config_Dialog *border_locks_dialog;
  360.    E_Config_Dialog *border_remember_dialog;
  361.    E_Config_Dialog *border_border_dialog;
  362.    E_Menu *border_stacking_menu;
  363.    E_Menu *border_maximize_menu;
  364.    Evas_List *pending_move_resize;
  365.    
  366.    struct {
  367.       unsigned char visible : 1;
  368.       unsigned char pos : 1;
  369.       unsigned char size : 1;
  370.       unsigned char stack : 1;
  371.       unsigned char prop : 1;
  372.       unsigned char border : 1;
  373.       unsigned char reset_gravity : 1;
  374.       unsigned char shading : 1;
  375.       unsigned char shaded : 1;
  376.       unsigned char shape : 1;
  377.       unsigned char icon : 1;
  378.    } changes;
  379.  
  380.    struct {
  381.     unsigned char start : 1;
  382.     int x, y;
  383.    } drag;
  384.  
  385.    unsigned int layer;
  386.    E_Action *cur_mouse_action;
  387.    Ecore_Timer *raise_timer;
  388.    Ecore_Timer *ping_timer;
  389.    Ecore_Timer *kill_timer;
  390.    int shape_rects_num;
  391.    Ecore_X_Rectangle *shape_rects;
  392.    E_Remember *remember;
  393.  
  394.    E_Border *modal;
  395.  
  396.    E_Border  *leader;
  397.    Evas_List *group;
  398.  
  399.    E_Border  *parent;
  400.    Evas_List *transients;
  401.  
  402.    E_App *app;
  403. };
  404.  
  405. struct _E_Border_Pending_Move_Resize 
  406. {
  407.    int x, y, w, h;
  408.    unsigned char move : 1;
  409.    unsigned char resize : 1;
  410. };
  411.  
  412. struct _E_Event_Border_Resize
  413. {
  414.    E_Border *border;
  415. };
  416.  
  417. struct _E_Event_Border_Move
  418. {
  419.    E_Border *border;
  420. };
  421.  
  422. struct _E_Event_Border_Add
  423. {
  424.    E_Border *border;
  425. };
  426.  
  427. struct _E_Event_Border_Remove
  428. {
  429.    E_Border *border;
  430. };
  431.  
  432. struct _E_Event_Border_Show
  433. {
  434.    E_Border *border;
  435. };
  436.  
  437. struct _E_Event_Border_Hide
  438. {
  439.    E_Border *border;
  440. };
  441.  
  442. struct _E_Event_Border_Iconify
  443. {
  444.    E_Border *border;
  445. };
  446.  
  447. struct _E_Event_Border_Uniconify
  448. {
  449.    E_Border *border;
  450. };
  451.  
  452. struct _E_Event_Border_Stick
  453. {
  454.    E_Border *border;
  455. };
  456.  
  457. struct _E_Event_Border_Unstick
  458. {
  459.    E_Border *border;
  460. };
  461.  
  462. struct _E_Event_Border_Zone_Set
  463. {
  464.    E_Border *border;
  465.    E_Zone   *zone;
  466. };
  467.  
  468. struct _E_Event_Border_Desk_Set
  469. {
  470.    E_Border *border;
  471.    E_Desk   *desk;
  472. };
  473.  
  474. struct _E_Event_Border_Stack
  475. {
  476.    E_Border *border, *stack;
  477.    E_Stacking type;
  478. };
  479.  
  480. struct _E_Event_Border_Icon_Change
  481. {
  482.    E_Border *border;
  483. };
  484.  
  485.  
  486. EAPI int       e_border_init(void);
  487. EAPI int       e_border_shutdown(void);
  488.  
  489. EAPI E_Border *e_border_new(E_Container *con, Ecore_X_Window win, int first_map);
  490. EAPI void      e_border_free(E_Border *bd);
  491. EAPI void      e_border_ref(E_Border *bd);
  492. EAPI void      e_border_unref(E_Border *bd);
  493. EAPI void      e_border_zone_set(E_Border *bd, E_Zone *zone);
  494. EAPI void      e_border_desk_set(E_Border *bd, E_Desk *desk);
  495. EAPI void      e_border_show(E_Border *bd);
  496. EAPI void      e_border_hide(E_Border *bd, int manage);
  497. EAPI void      e_border_move(E_Border *bd, int x, int y);
  498. EAPI void      e_border_resize(E_Border *bd, int w, int h);
  499. EAPI void      e_border_move_resize(E_Border *bd, int x, int y, int w, int h);
  500. EAPI void      e_border_layer_set(E_Border *bd, int layer);
  501. EAPI void      e_border_raise(E_Border *bd);
  502. EAPI void      e_border_lower(E_Border *bd);
  503. EAPI void      e_border_stack_above(E_Border *bd, E_Border *above);
  504. EAPI void      e_border_stack_below(E_Border *bd, E_Border *below);
  505. EAPI void      e_border_focus_latest_set(E_Border *bd);
  506. EAPI void      e_border_focus_set(E_Border *bd, int focus, int set);
  507. EAPI void      e_border_shade(E_Border *bd, E_Direction dir);
  508. EAPI void      e_border_unshade(E_Border *bd, E_Direction dir);
  509. EAPI void      e_border_maximize(E_Border *bd, E_Maximize max);
  510. EAPI void      e_border_unmaximize(E_Border *bd);
  511. EAPI void      e_border_unmaximize_vh(E_Border *bd, E_Maximize max);
  512. EAPI void      e_border_fullscreen(E_Border *bd, E_Fullscreen policy);
  513. EAPI void      e_border_unfullscreen(E_Border *bd);
  514. EAPI void      e_border_iconify(E_Border *bd);
  515. EAPI void      e_border_uniconify(E_Border *bd);
  516. EAPI void      e_border_stick(E_Border *bd);
  517. EAPI void      e_border_unstick(E_Border *bd);
  518.  
  519. EAPI E_Border *e_border_find_by_client_window(Ecore_X_Window win);
  520. EAPI E_Border *e_border_find_by_frame_window(Ecore_X_Window win);
  521. EAPI E_Border *e_border_find_by_window(Ecore_X_Window win);
  522. EAPI E_Border *e_border_find_by_alarm(Ecore_X_Sync_Alarm alarm);
  523. EAPI E_Border *e_border_focused_get(void);
  524.  
  525. EAPI void      e_border_idler_before(void);
  526.  
  527. EAPI Evas_List *e_border_client_list(void);
  528.  
  529. EAPI void e_border_act_move_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev);
  530. EAPI void e_border_act_move_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev);
  531. EAPI void e_border_act_resize_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev);
  532. EAPI void e_border_act_resize_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev);
  533. EAPI void e_border_act_menu_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev, int key);
  534. EAPI void e_border_act_close_begin(E_Border *bd);
  535. EAPI void e_border_act_kill_begin(E_Border *bd);
  536.  
  537. EAPI Evas_Object *e_border_icon_add(E_Border *bd, Evas *evas);
  538.  
  539. EAPI void e_border_button_bindings_ungrab_all(void);
  540. EAPI void e_border_button_bindings_grab_all(void);
  541.  
  542. EAPI Evas_List *e_border_focus_stack_get(void);
  543. EAPI Evas_List *e_border_lost_windows_get(E_Zone *zone);
  544.  
  545. EAPI void e_border_ping(E_Border *bd);
  546. EAPI void e_border_move_cancel(void);
  547. EAPI void e_border_resize_cancel(void);
  548. EAPI void e_border_frame_recalc(E_Border *bd);
  549. EAPI Evas_List *e_border_immortal_windows_get(void);
  550.  
  551. EAPI const char *e_border_name_get(E_Border *bd);
  552.  
  553. EAPI void e_border_signal_move_begin(E_Border *bd, char *sig, char *src);
  554. EAPI void e_border_signal_move_end(E_Border *bd, char *sig, char *src);
  555. EAPI int  e_border_resizing_get(E_Border *bd);
  556. EAPI void e_border_signal_resize_begin(E_Border *bd, char *dir, char *sig, char *src);
  557. EAPI void e_border_signal_resize_end(E_Border *bd, char *dir, char *sig, char *src);
  558. EAPI void e_border_resize_limit(E_Border *bd, int *w, int *h);
  559.     
  560. extern EAPI int E_EVENT_BORDER_RESIZE;
  561. extern EAPI int E_EVENT_BORDER_MOVE;
  562. extern EAPI int E_EVENT_BORDER_ADD;
  563. extern EAPI int E_EVENT_BORDER_SHOW;
  564. extern EAPI int E_EVENT_BORDER_HIDE;
  565. extern EAPI int E_EVENT_BORDER_REMOVE;
  566. extern EAPI int E_EVENT_BORDER_ICONIFY;
  567. extern EAPI int E_EVENT_BORDER_UNICONIFY;
  568. extern EAPI int E_EVENT_BORDER_STICK;
  569. extern EAPI int E_EVENT_BORDER_UNSTICK;
  570. extern EAPI int E_EVENT_BORDER_ZONE_SET;
  571. extern EAPI int E_EVENT_BORDER_DESK_SET;
  572. extern EAPI int E_EVENT_BORDER_STACK;
  573. extern EAPI int E_EVENT_BORDER_ICON_CHANGE;
  574.  
  575. #endif
  576. #endif
  577.